﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Presentacion.Contrato.VU_05_Gestionar_Practicas_por_Materia;
using vudu.Logica.Fachada;
using vudu.ClasesDominio;
using System.Data;

namespace vudu.Presentacion.Presentador.VU_05_Gestionar_Practicas_por_Materia
{
    public class PresentadorEliminarSeccionPractica
    {

        #region Atributos del Presentador

            private IContratoEliminarSeccionPractica _vista;
            private EnlaceLogico _fachada;
            private List<Materia> _misMaterias;
            private Escuela _miEscuela;
            private string _rol;

        #endregion

        #region Constructor

            public PresentadorEliminarSeccionPractica(IContratoEliminarSeccionPractica vista)
        {
            _vista = vista;
            _rol = (string)_vista.Sesion["TipoRol"];
            InitSecure(_rol);
        }

        #endregion

        #region Procedimientos de Manejo

            protected void InitSecure(string miRol)
            {
                //Valida el inicio de sesion;
                //con el usuario correcto;

                if ((miRol != null) && (miRol.Equals("Escuela")))
                {
                    _fachada = (EnlaceLogico)_vista.Sesion["Fachada"];
                    _miEscuela = (Escuela)_fachada.RolActual;
                    _vista.LabelEscuela.Text = _miEscuela.NombreEscuela;
                    _misMaterias = _fachada.ConsultarListaMateriasConPractica(_miEscuela.NombreEscuela);
                }
                else
                { _vista.Redirect("../VU_15 Gestion de Acceso/InicioSistema.aspx"); }
            }

        #region Carga de Data a la Vista GridView y Ddl

            public void LoadGridView()
            {
                // BUSCO LA LISTA DE PRACTICAS DADA LA SECCION MATERIA
                List<Practica> misPracticas = new List<Practica>();
                misPracticas = _fachada.ConsultarPracticasDadaSeccionMateria(Convert.ToInt32(_vista.DdlSeccTeoria.SelectedItem.Value));

                // SETEO EL NUMERO DE COLUMNAS DEL GRIDVIEW Y LES DOY NOMBRE
                DataTable table = new DataTable();
                table.Columns.Add("Seccion", typeof(string));
                table.Columns.Add("Nombre", typeof(string));
                table.Columns.Add("Profesor", typeof(string));
                table.Columns.Add("Id Practica", typeof(int));

                // COMIENZO EL LLENADO DEL GRIDVIEW
                foreach (Practica miPractica in misPracticas)
                {
                    String nombrePractica = miPractica.NombrePractica;
                    string numSeccion;
                    if (nombrePractica != null)
                    {
                        // CONSRUYO EL STRING DEL NOMBRE COMPLETO DEL PROFESOR
                        string nombreProfesor = miPractica.profesor.Nombre + " " + miPractica.profesor.Apellido;
                        if (miPractica.NumeroSeccion < 10)
                        { numSeccion = "00" + miPractica.NumeroSeccion.ToString(); }
                        else
                        { numSeccion = "0" + miPractica.NumeroSeccion.ToString(); }
                        table.Rows.Add(numSeccion, miPractica.NombrePractica, nombreProfesor, miPractica.IdPractica);
                    }
                }
                _vista.GridView1.DataSource = table;
                _vista.GridView1.DataBind();
                _vista.GridView1.Visible = true;

                // OCULTO LOS ID PRACTICAS PARA QUE NO APAREZCAN EN LA VISTA
                HideIdPracticaColumn(_vista.GridView1);
            }

            public void LoadDdlMateria()
            {
                _vista.DdlMateria.Visible = true;
                if ((_misMaterias != null) && (_misMaterias.Count > 0))
                {
                    for (int index = 0; index < _misMaterias.Count; index++)
                    {
                        ListItem myListItem = new ListItem();
                        myListItem.Value = _misMaterias[index].Codigo.ToString();
                        myListItem.Text = _misMaterias[index].Nombre;
                        _vista.DdlMateria.Items.Add(myListItem);
                    }
                }
                else
                { _vista.LabelEmpty.Text = "No existen materias con practicas registradas"; }
            }
        
            public void LoadDdlSeccTeoria()
        {
            List<SeccionMateria> misSecciones = new List<SeccionMateria>();
            int idMateriaSelect = Convert.ToInt32(_vista.DdlMateria.SelectedItem.Value);

            if (idMateriaSelect == 0)
            { 
                UnLoadAllDdlSeccTeoria(); 
            }
            else
            {
                misSecciones = _fachada.ArmarListaDeSeccionesDisponibles(_miEscuela.IdEscuela, idMateriaSelect);
                string seccionCod = "00";

                for (int index = 0; index < misSecciones.Count; index++)
                {
                    if ((misSecciones[index].ListaPractica != null) && (misSecciones[index].ListaPractica.Count > 0))
                    {
                        ListItem myListItem = new ListItem();
                        myListItem.Value = misSecciones[index].IdSeccionMateria.ToString();
                        myListItem.Text = seccionCod + misSecciones[index].Codigo;
                        _vista.DdlSeccTeoria.Items.Add(myListItem);
                    }
                }

                VisibleSeccTeoria();
            }
        }

        #endregion

        #region Descarga de los Ddl's

            public void UnLoadDdlGeneric(DropDownList myDdl)
            {
                ListItem myListItem = new ListItem();
                myDdl.Items.Clear();
                myListItem.Value = "0";
                myListItem.Text = "- Seleccionar -";
                myDdl.Items.Add(myListItem);
                myDdl.Visible = false;
            }

            protected void UnLoadAllDdlSeccTeoria()
            {
                UnLoadDdlGeneric(_vista.DdlSeccTeoria);
                UnVisibleAllSeccTeoria();
            }

            public void UnLoadGridView()
            {
                DataTable myDataTable = new DataTable();
                myDataTable.Columns.Add("Seccion", typeof(string));
                myDataTable.Columns.Add("Nombre", typeof(string));
                myDataTable.Columns.Add("Profesor", typeof(string));
                //myDataTable.Columns.Add("Id Practica", typeof(int));
                _vista.GridView1.DataSource = myDataTable;
                _vista.GridView1.DataBind();
                _vista.GridView1.Visible = false;
                //HideIdPracticaColumn(_vista.GridView1);
            }

        #endregion

        #region Visibilidad y Ocultamiento de GridView y Ddl

            protected void VisibleSeccTeoria()
            {
                _vista.DdlSeccTeoria.Visible = true;
                _vista.LabelOSeccTeoria.Visible = true;
                _vista.LabelSeccTeoria.Visible = true;

            }

            public void UnVisibleAllSeccTeoria()
        {
            _vista.LabelOSeccTeoria.Visible = false;
            _vista.LabelSeccTeoria.Visible = false;
            _vista.LabelStatus.Text = "";
        }

            private void HideIdPracticaColumn(GridView gridView)
            {
                gridView.HeaderRow.Cells[4].Visible = false;
                foreach (GridViewRow row in gridView.Rows)
                {
                    row.Cells[4].Visible = false;
                }
            }

        #endregion

        #region Llamada a la funcion de eliminacion

            public void EliminarPractica(int idPractica)
            {
                if (_fachada.EliminarPractica(idPractica))
                {
                    if (_vista.GridView1.Rows.Count > 1)
                    {
                        UnLoadGridView();
                        LoadGridView();
                    }
                    else
                    {
                        _misMaterias = _fachada.ConsultarListaMateriasConPractica(_miEscuela.NombreEscuela);
                        UnLoadDdlGeneric(_vista.DdlMateria);
                        LoadDdlMateria();
                        UnLoadAllDdlSeccTeoria();
                        UnLoadGridView();
                    }
                    _vista.LabelStatus.Text = "Operacion Exitosa";
                }
            }

        #endregion

        #endregion

    }
}
